import pandas as pd
import matplotlib.pyplot as plt
from matplotlib.font_manager import FontProperties

# 设置全局字体
#plt.rcParams['font.sans-serif'] = ['SimHei']  # 'SimHei' 是黑体的名字，你也可以尝试其他中文字体
#plt.rcParams['axes.unicode_minus'] = False  # 正确显示负号
font = FontProperties(fname=r"/usr/share/fonts/opentype/noto/NotoSerifCJK-Regular.ttc", size=14)

url = "http://www.hkfsd.gov.hk/datagovhk/datasets/Classification_of_Causes_eng.csv"
df = pd.read_csv(url)
df_rename = df.rename(columns={'Classification of Fires by Causes': 'Date'})
df_drop = df_rename.drop(columns=['Unnamed: 14','Unknown','Controlled burning']) 
# remove the rows with empty value
df_clean = df_drop.dropna()

# 设置x轴数据（第一列）
x = df_clean['Date']
# 绘制每列作为一条折线
for column in df_clean.columns[1:]:  # 跳过第一列，即x轴的数据
    plt.plot(x, df_clean[column], label=column)
# 添加图例
plt.legend()
# 添加标题和轴标签
plt.title('不同种类的火灾随月份变化折线图', fontproperties=font)
plt.xlabel('月份', fontproperties=font)
plt.ylabel('火灾次数', fontproperties=font)
# 显示图表
plt.show()

df_a = df_clean
#只保留年份
df_a['Date'] = df_a['Date'].str[3:]
df_a

# 按照年份分组，对其它列进行聚合运算
# 使用groupby和agg进行合并
result = df_a.groupby('Date').agg({
    'Sparks from welding & oxygen acetylene cutting': 'sum',  # 你可以选择不同的聚合函数，如'mean', 'max', 'min'等
    'Children playing with matches': 'sum',  # 对每个组应用不同的聚合函数
    'Over-heating of engines, motor & machinery': 'sum',  # 对每个组应用不同的聚合函数
    'Careless disposal of joss sticks, joss paper & candles, etc.': 'sum',  # 对每个组应用不同的聚合函数
    'Food stuff (stove overcooking)': 'sum',  # 对每个组应用不同的聚合函数
    'Careless handling or disposal of cigarette ends, matches and candles, etc.': 'sum',  # 对每个组应用不同的聚合函数
    'General electrical fault': 'sum',  # 对每个组应用不同的聚合函数
    'Miscellaneous': 'sum',  # 对每个组应用不同的聚合函数
    'False alarm': 'sum',  # 对每个组应用不同的聚合函数
    'Deliberate act / Undetermined': 'sum',  # 对每个组应用不同的聚合函数
    'Unwanted alarm': 'sum'  # 对每个组应用不同的聚合函数
}).reset_index()
print(result)

# 设置x轴数据（第一列）
x = result['Date']
# 绘制每列作为一条折线
for column in result.columns[1:]:  # 跳过第一列，即x轴的数据
    plt.plot(x, result[column], label=column)
# 添加图例
plt.legend()
# 添加标题和轴标签
plt.title('不同种类的火灾随年份变化折线图', fontproperties=font)
plt.xlabel('年份', fontproperties=font)
plt.ylabel('火灾次数', fontproperties=font)
# 显示图表
plt.show()
